// vue.config.js
const path = require('path');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

function resolve (dir) {
    return path.join(__dirname, dir)
}

module.exports = {
    // 公共路径
    publicPath:  process.env.VUE_APP_BASE_URL,
    // 不同的环境打不同包名
    outputDir: process.env.NODE_ENV === "development" ? 'devdist' : 'dist',

    // 使用运行时编译器的 Vue 构建版本
    runtimeCompiler: true,

    // 开启生产环境SourceMap，设为false打包时不生成.map文件
    productionSourceMap: false,

    // 关闭ESLint，如果你需要使用ESLint，把lintOnSave设为true即可
    lintOnSave: false,

    devServer: {
        open: true, // 是否自动打开浏览器页面
        hot: true,
        // host: 'localhost', // 指定使用一个 host，默认是 localhost
        port: process.env.VUE_APP_PORT, // 端口地址
        https: false, // 使用https提供服务
        // 这里写你调用接口的基础路径，来解决跨域，如果设置了代理，那你本地开发环境的axios的baseUrl要写为 '' ，即空字符串
        proxy: 'http://172.16.4.164:8080/security',
        // proxy: {
        //     '/test': {
        //         target: 'http://172.16.104.194:8080',
        //         changeOrigin: true,
        //         secure: false,
        //         ws: true
        //     }
        // },
        headers: {
            'Access-Control-Allow-Origin': '*' // 主应用获取子应用时跨域响应头
        },
    },

    chainWebpack: (config) => {
        // 设置一些常用alias
        config.resolve.alias
            .set('@', resolve('src'))
            .set('@assets', resolve('src/assets'))
            .set('@components', resolve('src/components'))
        config.externals({ './cptable': 'var cptable' })
        // 移除 prefetch 插件，减少首屏加载
        config.plugins.delete('prefetch')

        config.plugins.delete('preload') // TODO: need test
        config.plugins.delete('prefetch') // TODO: need test

        // set svg-sprite-loader
        config.module
            .rule('svg')
            .exclude.add(resolve('src/assets/icons'))
            .end()
        config.module
            .rule('icons')
            .test(/\.svg$/)
            .include.add(resolve('src/assets/icons'))
            .end()
            .use('svg-sprite-loader')
            .loader('svg-sprite-loader')
            .options({
                symbolId: 'icon-[name]'
            })
            .end()

    },

    configureWebpack: config => {
        // 生产环境
        if (process.env.NODE_ENV === 'production') {
            // 生产环境去除console
            config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
            // 生产环境打包分析体积
            return {
                plugins: [
                    // new BundleAnalyzerPlugin()
                ]
            }
        }
        return {
            devtool: 'source-map'
        }
    },
    css: {
        loaderOptions: {
            // 全局使用的一些scss样式
            sass: {
                additionalData: ''

            }
        }
    },
};
